package com.chb.myWeather;
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.io.WritableComparator;
/**
 *  自定义sort， 在shuffle过程中，
 *  默认情况按照key的字典排序，
 *  由于我们需要对温度排序， 所以自定义sort，然输出的数据按照T排序，
 *  我们不用再进行比较，直接去每组的前三个值，即为一个月份的最高三个温度
 */
public class MySort extends WritableComparator{
	//将自定义的key类加载进行
	public  MySort() {
		super(MyKey.class, true);
	}
	/**
	 * 比较两个对象的温度
	 */
	@Override
	public int compare(WritableComparable a, WritableComparable b) {
		MyKey k1 = (MyKey)a;
		MyKey k2 = (MyKey)b;
		int  r1 = Integer.compare(k1.getYear(), k2.getYear());
		if (r1 == 0 ) {
			int r2 = Integer.compare(k2.getMonth(), k2.getMonth());
			if (r2 == 0) {
				//前面加一个- 。因为我们是按照温度的降序排序
				return -Double.compare(k1.getT(),k2.getT());
			}else {
				return r2;
			}
		}else {
			return r1;
		}
	}
}
